const dayjs = require('dayjs');
/**
 * 新闻列表页面行为
 * 用于处理新闻列表页面通用逻辑
 */
module.exports = Behavior({
  data: {
    // 新闻列表
    newsList: [],
    
    // 分页相关
    isLoading: false,
    isMore: true,
    page: 1,
    size: 10,
    
    // 分类相关
    cateList: [],
    currentCateId: '',
  },
  
  methods: {
    /**
     * 获取新闻分类列表
     */
    async loadNewsCateList() {
      try {
        this.setData({ isLoading: true });
        
        // 可以调用实际的接口获取分类
        // 这里使用模拟数据
        const cateList = [
          { id: '', name: '全部' },
          { id: '1', name: '公司新闻' },
          { id: '2', name: '行业资讯' },
          { id: '3', name: '通知公告' }
        ];
        
        this.setData({ 
          cateList,
          isLoading: false
        });
        
        return cateList;
      } catch (err) {
        console.error('加载新闻分类失败', err);
        this.setData({ isLoading: false });
        return [];
      }
    },
    
    /**
     * 加载新闻列表
     * @param {Boolean} isRefresh 是否刷新
     */
    async loadNewsList(isRefresh = false) {
      try {
        if (isRefresh) {
          this.setData({ page: 1, isMore: true });
        }
        
        if (!this.data.isMore) return;
        
        this.setData({ isLoading: true });
        
        // 可以调用实际的接口获取新闻
        // 这里使用模拟数据
        const { page, size, currentCateId } = this.data;
        
        // 模拟请求
        await new Promise(resolve => setTimeout(resolve, 500));
        
        // 模拟数据
        const mockList = Array(size).fill().map((_, idx) => ({
          id: `news_${page}_${idx}`,
          title: `新闻标题 ${page}-${idx+1}`,
          cateId: ['1', '2', '3'][idx % 3],
          cateName: ['公司新闻', '行业资讯', '通知公告'][idx % 3],
          addTime: dayjs().toISOString(),
          desc: `这是新闻描述内容，页码 ${page} 的第 ${idx+1} 条`,
          viewCnt: Math.floor(Math.random() * 1000)
        }));
        
        // 根据分类筛选
        const list = currentCateId ? 
          mockList.filter(item => item.cateId === currentCateId) : 
          mockList;
        
        const isMore = list.length >= size;
        const newsList = isRefresh ? list : this.data.newsList.concat(list);
        
        this.setData({
          newsList,
          isMore,
          page: page + 1,
          isLoading: false
        });
        
        return newsList;
      } catch (err) {
        console.error('加载新闻列表失败', err);
        this.setData({ isLoading: false });
        return [];
      }
    },
    
    /**
     * 切换分类
     * @param {Object} e 事件对象
     */
    switchCate(e) {
      const currentCateId = e.currentTarget.dataset.id;
      this.setData({ currentCateId });
      this.loadNewsList(true);
    }
  }
}); 